home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The PC-SIG Library 9
/
The PC-SIG Library on CD ROM - Ninth Edition.iso
/
1201_300
/
DISK1262
/
DISK1262.ZIP
/
DEMO.D
< prev
next >
Wrap
Text File
|
1988-07-11
|
4KB
|
177 lines
PROG DEMO
;
; Doug's Programming Language -- DPL, Version 2.22
; Copyright (c) 1988 Douglas S. Cody, All rights reserved.
;
; This program demonstrates the use of a shade & how to manipulate it.
;
; The following structure is the video control block required by SHADE for
; every shade used on the screen.
;
SBLOCK1 LABEL WORD
DW 0 ; Starting row
DW 1 ; Starting column
DW 17 ; Ending column
DW 4 ; Number of entries in the table
DW VBUF1 ; Video buffer backup buffer
DW 02H ; Border display attribute
DW 2FH ; Box display Attribute
SCB_OPT DW 00 ; Last option choosen
DW 00 ; Shade is opened (internal use only)
DW OFFSET M00 ; ASCIIZ strings
DW OFFSET M01
DW OFFSET NULL
DW OFFSET M02
;
SBLOCK2 LABEL WORD
DW 5 ; Starting row
DW 10 ; Starting column
DW 50 ; Ending column
DW 5 ; Number of entries in the table
DW VBUF2 ; Video buffer backup buffer
DW 70H ; Border display attribute
DW 7FH ; Box display Attribute
DW 00 ; Last option choosen
DW 00 ; Shade is opened (internal use only)
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
DW OFFSET M05
;
; The video backup buffers are declared in the DATA segment. The following
; formula is used to calculate the required size of the buffer
;
; BUFFER SIZE = (# OF ENTRIES IN TABLE + 2) *
; (ENDING COLUMN - STARTING COLUMN + 2) *
; 2
;
VBUF1 DW 108 DUP(?)
VBUF2 DW 2048 DUP(?)
;
; The follow is data to be used in the demonstration.
;
DEFINE M00,'Expand Shade'
DEFINE M01,'Contract Shade'
DEFINE M02,'Exit to DOS'
;
DEFINE M06,'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB'
DEFINE M05,'12345678901234567890123456789012345678901234567890123456789012345678901234567890'
;
DEFINE M10,'Use ARROW keys to select option & type ENTER'
DEFINE M11,'Use ARROW keys to select direction, ENTER to goto menu'
DEFINE BLANKS,' '
;
SET ONE,1
SET TWO,2
SET FOUR,4
;
BEGIN DEMO
EXTRN SHADE:NEAR, OPSHD:NEAR, CLSHD:NEAR
EXTRN SHDDO:NEAR, SHDEXP:NEAR, SHDSML:NEAR
EXTRN VIDWRT:NEAR, CLRSCR:NEAR, VIDON:NEAR, VIDOFF:NEAR
;
; CLEAR THE SCREEN USING THE BIOS SCROLL FUNCTION
;
CALL CLRSCR
;
; FILL THE SCREEN WITH A PATTERN
;
CALL FILL_IT
;
A00:
;
; WRITE THE USER HELP MESSAGE AT THE BOTTOM OF THE SCREEN
;
CURSOR 24,0
CALL VIDWRT 04 BLANKS 2FH
CALL VIDWRT 00 M10
;
; PROMPT THE OPERATOR WITH A SHADE
;
CALL SHADE SBLOCK1
;
; WE HAVE THE ANSWER IN SHADE CONTROL BLOCK #1, AT OFFSET 0EH. 'SCB_OPT' HAS
; BEEN DECLARE AT THIS POINT WITHIN THE BLOCK FOR EASE OF PROGRAMMING.
;
IF WORD SCB_OPT NE ONE GOTO B00
;
; WE ARE REQUESTED TO EXPAND THE SHADE, GIVE SOME DIRECTIONS & DO IT...
;
CALL VIDWRT 04 BLANKS 2FH
CALL VIDWRT 00 M11
CALL SHDEXP SBLOCK2
GOTO A00
;
B00:
IF WORD SCB_OPT NE TWO GOTO C00
;
; WE ARE REQUESTED TO CONTRACT THE SHADE, GIVE SOME DIRECTIONS & DO IT...
;
CALL VIDWRT 04 BLANKS 2FH
CALL VIDWRT 00 M11
CALL SHDSML SBLOCK2
GOTO A00
;
C00:
IF WORD SCB_OPT NE FOUR GOTO A00
;
; WE ARE REQUESTED TO EXIT TO DOS
;
CALL VIDWRT 04 BLANKS 0FH ; CLEAR LINE 25
CURSOR 23,0 ; MOVE TO LINE 24 FOR DOS'S CR/LF
STOP
;
;
;=====================
; ROUTINE SECTION
; LEVEL 1
;=====================
;
;
; F I L L _ I T -- FILL THE SCREEN WITH OUR PATTERN.
;
; Entry conditions:
; None
; Exit conditions:
; None
;
FILL_IT PROC NEAR
MOV CX,23 ; # OF LINES TO MODIFY
CALL VIDOFF ; TURN OFF THE VIDEO DURING WRITE
;
FLIT_05:
PUSH CX
CURSOR CX,0 ; FROM BOTTOM TO TOP!
CALL VIDWRT 00 M06 ; WRITE DIRECTLY TO THE SCREEN
POP CX
LOOP FLIT_05 ; CONTINUE TILL ALL DONE
;
CALL VIDON ; TURN ON THE VIDEO...
RETURN
FILL_IT ENDP
;
ENDPGM DEMO
;